/*
 * blendImg.c
 *
 *  Created on: 09/03/2015
 *      Author: lucas
 */
# include <stdlib.h>
# include <stdio.h>
# include <string.h>
# include <math.h>
# include "imgifsc.h"
# include "pgma_io.h"

/*M. Desenvolver uma função para gerar uma nova imagem a partir da operação de mescla (alpha blending) de
duas imagens no formato Img, da seguinte forma:
I new (u , v )=α⋅I BG (u , v)+(1−α)⋅I FG ,
com  0≤α≤1 ,  I BG , a imagem de fundo (background) e  I FG , a imagem de frente (foreground).
O protótipo da função é o seguinte:
void blendImg(struct Img *imNew, const struct Img *imBG, const struct Img *imFG, const float alpha);*/

void blendImg(struct Img *imNew, const struct Img *imBG, const struct Img *imFG, const float alpha)
{
	int i, j;
	int *datapt1=imBG->data;
	int *datapt2=imFG->data;
	int *datapt3=imNew->data;
	j = (imBG->height)*(imBG->width);
	if (j==(imFG->height)*(imFG->width))
	{
		for(i=0; i < j; i++)
		{
			*(datapt3+i) = alpha*(*(datapt1+i))+(1-alpha)*(*(datapt2+i));
			if (*(datapt3+i)<0)
				*(datapt3+i)=(*(datapt3+i))*(-1);
		}
	}
	else
		puts("Erro! Imagens de tamanhos diferentes.\n");
	imNew->height=(imBG->height);
	imNew->width=(imBG->width);
}


